package rmi.server;

import java.rmi.Remote;
import java.rmi.RemoteException;
import java.util.ArrayList;

import model.PlayerInterface;
import model.SettingsInterface;
import model.UserInterface;

public interface User extends Remote
{
	public PlayerInterface newPlayer(String username) throws RemoteException;
	
	public void setSettings(PlayerInterface player) throws RemoteException;
	
	public void setSettings(SettingsInterface settings) throws RemoteException;
	
	public void storeUser(UserInterface user) throws RemoteException;
	
	public void banPlayer(PlayerInterface player) throws RemoteException;
	
	public UserInterface getDefaultUser() throws RemoteException;
	
	public UserInterface getUser(String username, char[] password) throws RemoteException;
	
	public UserInterface getUser(String username, String password) throws RemoteException;
	
	public UserInterface getUserByUsername(String username) throws RemoteException;
	
	public ArrayList<PlayerInterface> getPlayers() throws RemoteException;
	
	public ArrayList<PlayerInterface> getPlayersByUsername(String username) throws RemoteException;
	
	public void logout(UserInterface user) throws RemoteException;
}